Static code analysis in multi-threaded environments

نویسنده

  • Christian Ehrhardt
چکیده

Who can understand his errors? Cleanse thou me from secret faults. Preface The notion that software might contain errors dates back to the famous annotations of Lady Ada Lovelace to the description of the Analytical Engine designed by Charles Babbage[36] where she states: " Granted that the actual mechanism [of the Analytic Engine] is unerring in its processes, the cards may give it wrong orders. This is unquestionably the case; but there is much less chance of error, and likewise far less expenditure of time and labour, where operations only, and the distribution of these operations, have to be made out, than where explicit numerical results are to be attained. " Despite Lady Lovelace's assessment, errors in software (i.e. today's equivalent of cards that give wrong orders) have become a predominant concern in software development and software engineering. Nowadays, the vast majority of software engineers and hackers alike believes that all sufficiently complex software has bugs. Solutions that have been proposed to uncover bugs reach from testing on the one hand to rigorous formal proofs of correctness on the other hand. In this work we follow an intermediate approach that tries to use sound and conservative static code analysis techniques to avoid certain classes of bugs without having to conduct a full blown formal proof of correctness. The methods developed in this work are tailored to concurrent systems where global data is shared between all threads. While this requirement is not strictly necessary for the soundness of the analysis we shall see that it greatly increases the accuracy. In this context accuracy refers to the likelihood that a problem reported by the analysis is caused by an actual bug in the software and not by an inadequacy of the analysis methods. The usefulness of the methods presented will be supported by several case studies conducted on real life software systems of significant size. Nevertheless, I am convinced that in software engineering there is no Holy Grail that software can gain eternal bug free life from. As a corollary this Holy Grail cannot be expected to be found in this work. Thus, readers are encouraged to use the methods described in this work to supplement but not to replace existing bug prevention and software quality techniques. 1 2 Acknowledgments This work has been developed at the Institute of Applied Information Processing at the University of Ulm. I would like to express …

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Thimble: Design-time Analysis of Multi-threaded System Behavior

Commercial multi-core processors promise to provide more processing capacity than their single-core counterparts, in a comparable physical footprint. To fully leverage the increased processing throughput offered by multi-core solutions, however, systems must be explicitly developed with concurrent execution in mind. Today, the predominant approach to building concurrent software is through the ...

متن کامل

Sound, Precise and Efficient Static Race Detection for Multi-Threaded Programs

Title of dissertation: Sound, precise and efficient static race detection for multi-threaded programs Polyvios Pratikakis Doctor of Philosophy, 2008 Dissertation directed by: Professor Michael Hicks Professor Jeffrey S. Foster Department of Computer Science Multi-threaded programming is increasingly relevant due to the growing prevalence of multi-core processors. Unfortunately, the non-determin...

متن کامل

Side-Effecting Constraint Systems: A Swiss Army Knife for Program Analysis

Side-effecting constraint systems were originally introduced for the analysis of multi-threaded code [22]. In this paper, we show how this formalism provides a unified framework for realizing efficient interprocedural analyses where the amount of context-sensitivity can be tweaked and where the context-sensitive analyses of local properties can be combined with flow-insensitive analyses of glob...

متن کامل

Applying Jlint to Space Exploration Software

Java is a very successful programming language which is also becoming widespread in embedded systems, where software correctness is critical. Jlint is a simple but highly efficient static analyzer that checks a Java program for several common errors, such as null pointer exceptions, and overflow errors. It also includes checks for multi-threading problems, such as deadlocks and data races. The ...

متن کامل

A Multi-Threaded Architecture for Prefetching in Object Bases

We propose a generic architectural framework, a multi-threaded run-time system for client/server architectures, which facilitates the integration, exchange and extension of various prefetching techniques. To demonstrate the viability of this architecture two prefetching techniques are incorporated: a predictor-based technique|which consists of a separate predictor component in the run-time syst...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2007